Verifying Programs with Arrays and Lists

نویسندگان

  • Julien Braine
  • Laure Gonnord
  • David Monniaux
  • Julien BRAINE
چکیده

Automatically verifying safety properties of programs is a tough problem that has been tackled using many different approaches: rewriting systems, abstract interpretation, SMT solving, . . . Most techniques restrict themselves to programs operating on boolean and integer values and transposing them to infinite data structures such as arrays has not yet been satisfyingly achieved. Recent work in Monniaux and Gonnord [2016] suggests the use of abstract interpretation to transpose programs containing arrays into Horn clauses that do not contain arrays. The major innovation of their work is that they use Horn clauses which are more general than programs, to obtain better results. In this work, we first set the work of Monniaux and Gonnord in a more general framework that allows us to extend their abstractions, simplify the expressions they generate, and analyze the precision of their abstraction. Finally we extend their abstractions so that we can the analyze lists and experiments show that we succeed to analyze several classical examples, including sorting algorithms.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Inductive Reasoning for Shape Invariants pdfsubject

Automatic verification of imperative programs that destructively manipulate heap data structures is challenging. In this paper we propose an approach for verifying that such programs do not corrupt their data structures. We specify heap data structures such as lists, arrays of lists, and trees inductively as solutions of logic programs. We use off-the-shelf first-order theorem provers to reason...

متن کامل

A Verifier for Functional Properties of Sequence-Manipulating Programs

Many programs operate on data structures whose models are sequences, such as arrays, lists, and queues. When specifying and verifying functional properties of such programs, it is convenient to use an assertion language and a reasoning engine that incorporate sequences natively. This paper presents qfis, a program verifier geared to sequence-manipulating programs. qfis is a command-line tool th...

متن کامل

A Transformation Strategy for Verifying Logic Programs on Infinite Lists

We consider an extension of the class of logic programs, called ω-programs, that can be used to define predicates over infinite lists. The ω-programs allow us to specify properties of the infinite behaviour of reactive systems and, in general, properties of infinite sequences of events. The semantics of ω-programs is an extension of the perfect model semantics. We present a general methodology ...

متن کامل

Verifying Complex Properties using Symbolic Shape Analysis

One of the main challenges in the verification of software systems is the analysis of statically unbounded data structures with dynamic memory allocation, such as linked data structures and arrays. We describe Bohne, a new analysis for verifying data structures. Bohne verifies data structure operations and shows that 1) the operations preserve data structure invariants and 2) the operations sat...

متن کامل

Here be wyverns! Verifying LLVM bitcode with llStar

We present the llStar tool for the verification of programs written in bitcode, the intermediate language of the LLVM compiler infrastructure. The low-level nature of bitcode makes it a challenging target for automatic formal verification. Thanks to a novel adaptation of separation logic to bitcode’s memory model, and using the symbolic execution engine coreStar together with z3 as a backend, l...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2017